有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何格式化servlet响应以生成HTML中“accept”参数可接受的媒体类型?

我想了解对浏览器的响应是如何工作的。例如,jersey说它使用annotation@Products定义的最可接受的媒体类型响应请求:

 @GET
 @Produces({"application/xml", "application/json"})
 public String doGetAsXmlOrJson() {
   ...
 }

在上面的例子中,最可接受的类型是“application/xml”。好对于这种媒体类型,我将在Servlet中执行以下操作:

response.setContentType("application/xml");
PrintWriter out = response.getWriter();
out.println("<root><x>1</x></root>");

要点是:我需要根据媒体类型格式化响应,正如我在上一行中所做的那样

假设浏览器不支持“application/xml”,我想知道如何使用HttpServletResponse格式化第二个可接受的类型。在这种情况下,应该选择“application/json”


共 (1) 个答案

  1. # 1 楼答案

    除非客户机告诉您,否则您无法知道客户机支持哪种媒体类型。这通常是通过^{} header完成的

    The Accept request-header field can be used to specify certain media types which are acceptable for the response.

    所以如果客户端发送

    Accept: application/xml
    

    您应该尝试生成application/xml格式的响应

    String mediaType = request.getHeader("Accept"); // can return null
    

    如果您不能生成这样的响应,那么应该使用带有适当主体的^{}状态代码进行响应